package com.sloth.service;

import com.sloth.pojo.*;
import com.sloth.util.ServerResponse;

import java.util.Map;

/**
 * @author lai
 * @time 2021/10/8 9:01
 */
public interface PlaceAnOrderService {

    // 从购物车中结算获得 用户id、商品id

    // 添加订单
    public ServerResponse insert(Myorder myorder);

    // 根据 customerId 查询所有的收货地址
    public ServerResponse getByCustomerIdAddress(Integer customerId);

    // 根据购物车中的下单按钮 选中的商品，向后端进行查询，查询的商品 id 可能不是一个，所以咋传值？？？？？？ 现在写的方法是将商品的 id 作为一个数据向后传值进行查询
    public ServerResponse getByCarProductId(Map<Integer,Integer> map);
//    public ServerResponse getByCarProductId(Map<String,Object> map);

    // 传递 该订单中存在的商品的总价和总数量

    // 查询并返回第一个收货地址
    public ServerResponse getByCustomerIdAddressFirst(Integer customer);

    // 返回订单的总价格
    public Double getMyOrderTotalPrice(Map<Integer,Integer> map);

    // 用于调用支付宝，向支付宝传递 订单中商品名称（拼接）、订单中商品的数量
    public ALiPayMyOrderProductNameAndCount getByMyOrderIdForProNames(Integer myOrderId);

    // 通过订单详情id查询该订单详情
    public OrderDetails getByOrderDetailsId(Integer orderDetailId);

    // 通过该订单详情信息中的订单id查询订单收货地址id，通过地址id在地址表中查询该订单的收货地址信息
    public Address getByOrderIdForAddress(Integer orderId);

    // 通过订单详情id查询订单信息
    public Myorder getMyOrderIdByOrderDetailId(Integer myOrderId);

    // 通过订单详情中的商品id拿到订单详情中的商品信息
    public Product getProductByOrderDetailsProId(Integer productId);

    // 通过订单详情id查询属于该订单详情的流水信息
    public Flow getFlowByOrderDetailId(Integer orderDetailId);

}